1. Field of the Invention
The invention relates generally to computer and software architectures, and more particularly to systems and methods for constructing network transaction processing platforms that comprise plug-in modules which control the manner in which transactions between a client and a server are processed.
2. Related Art
A vast majority of the computer systems that are currently in use are not configured strictly as stand-alone devices. In other words, they are coupled to other computers, and possibly other types of devices, through one or more networks. For example, it is typical for a personal computer set up for use at a person's home or business to be connected to other computers (e.g., web servers) via the Internet. Communications between networked computers can be handled in many different ways. For example, a single computer can run multiple network programs at the same time, and each program can use any communication protocol (or protocols) that chooses. The only restriction on these programs is that only one program can bind to a specific TCP or UDP port at a time. Thus, only one program can listen for requests on any given port (e.g., port 80, which is the standard port for HTTP), but a second program (e.g., an FTP server or even another Web server) running at the same time can only listen for requests on a different port.
Just as a particular program can use different protocols, a particular program can perform one or many tasks. For example, a program can perform the tasks of a content server, a content proxy, a caching proxy, a transformation proxy, an advertisement insertion proxy, a content optimization server or proxy, and so on.
Even though it is possible for programs to perform multiple tasks, prior art programs for handling network communications have typically been designed to perform a single task per program. Prior art programs that perform multiple tasks are actually quite rare. In some instances, prior art programs act as dispatchers to other programs that perform different tasks. For example, a Web server can be configured to dispatch received requests to different programs (e.g., CGI's), depending upon the actual URL that is requested.
Prior art programs therefore present a number of difficulties in designing a system that performs multiple tasks. For example, because prior art programs are typically designed to perform a single task, chaining these single tasks with others often involves rewriting most or all of the corresponding programs. Further, because different programs are typically used to perform different tasks (e.g., as in the foregoing example of the Web server that dispatches requests to other programs), there is little or no sharing of functionality between these programs. Thus, each program may have to independently provide such functionality as caching, logging, configuration, authorization, monitoring, communications, and so on.